#ifndef __ISO15765_4_H__
#define __ISO15765_4_H__

#define DSTotal15765    51

extern CanTxMsg EnterCmd15765;
extern CanTxMsg DtcCmd15765;
extern CanTxMsg CdtcCmd15765;
extern CanTxMsg DsCmd15675;
extern const DsControlTypeDef dsControl15765[DSTotal15765];

//++++functions++++
//void iso15765_4(u8 canType, u8 velocity);
int iso15765_4_enter(u8 canType);
void iso15765_4_config(u8 canType, u8 velocity);
char *iso15765_4_dtc(u8 canType, ErrorStatus *err);
void iso15765_4_cdtc(u8 canType, ErrorStatus *err);

u8 iso15765_get_error_code(u8 canType, u16 *codes);
int iso15765_clear_error_code(u8 canType);
int iso15765_readEnginSpeed(u8 canType);
u8 iso15765_get_payload(u8 canType);
u8 iso15765_get_ect(u8 canType);
u16 iso15765_get_speed(u8 canType);
u16 iso15765_get_mil_distance(u8 canType);
float iso15765_get_relative_frp(u8 canType);
float iso15765_get_frp(u8 canType);
float iso15765_get_ratio_1_1(u8 canType);
float iso15765_get_o2vol_1_1(u8 canType);
float iso15765_get_ratio_1_2(u8 canType);
float iso15765_get_o2vol_1_2(u8 canType);
float iso15765_get_ratio_1_3(u8 canType);
float iso15765_get_o2vol_1_3(u8 canType);
float iso15765_get_ratio_1_4(u8 canType);
float iso15765_get_o2vol_1_4(u8 canType);
float iso15765_get_ratio_2_1(u8 canType);
float iso15765_get_o2vol_2_1(u8 canType);
float iso15765_get_ratio_2_2(u8 canType);
float iso15765_get_o2vol_2_2(u8 canType);
float iso15765_get_ratio_2_3(u8 canType);
float iso15765_get_o2vol_2_3(u8 canType);
float iso15765_get_ratio_2_4(u8 canType);
float iso15765_get_o2vol_2_4(u8 canType);
float iso15765_get_egr(u8 canType);
float iso15765_get_egr_error(u8 canType);
float iso15765_get_ioep(u8 canType);
float iso15765_get_fuel_level_input(u8 canType);
u16 iso15765_get_after_start_times(u8 canType);
u16 iso15765_get_after_distance(u8 canType);
u16 iso15765_get_emission_sys_press(u8 canType);
u16 iso15765_get_press(u8 canType);
float iso15765_get_o2cur_1_1(u8 canType);
float iso15765_get_ratio2_1_1(u8 canType);
float iso15765_get_o2cur_1_2(u8 canType);
float iso15765_get_ratio2_1_2(u8 canType);
float iso15765_get_o2cur_1_3(u8 canType);
float iso15765_get_ratio2_1_3(u8 canType);
float iso15765_get_o2cur_1_4(u8 canType);
float iso15765_get_ratio2_1_4(u8 canType);
float iso15765_get_o2cur_2_1(u8 canType);
float iso15765_get_ratio2_2_1(u8 canType);
float iso15765_get_o2cur_2_2(u8 canType);
float iso15765_get_ratio2_2_2(u8 canType);
float iso15765_get_o2cur_2_3(u8 canType);
float iso15765_get_ratio2_2_3(u8 canType);
float iso15765_get_o2cur_2_4(u8 canType);
float iso15765_get_ratio2_2_4(u8 canType);
float iso15765_get_cat_temp_1_1(u8 canType);
float iso15765_get_cat_temp_1_2(u8 canType);
float iso15765_get_cat_temp_2_1(u8 canType);
float iso15765_get_cat_temp_2_2(u8 canType);
float iso15765_get_short_fuel_adj_1(u8 canType);
float iso15765_get_long_fuel_adj_1(u8 canType);
float iso15765_get_short_fuel_adj_2(u8 canType);
float iso15765_get_long_fuel_adj_2(u8 canType);
u8 iso15765_get_gas_temp(u8 canType);
float iso15765_get_throttle_pos(u8 canType);
//----functions----

#endif
